#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>


int main(int argc, char const *argv[])
{
/**
作用：根据当前进程，创建一个新的子进程
返回值：pid_t 本质是int类型
    失败：-1
    进入子（新的）进程执行： 0
    进入父（当前）进程执行： 子进程的pid
注意：
    当成功后 会拷贝一个和当前进程一样的进程
    当执行系统调用后  cpu会到 linux内核手里 在一个进程中经常会调用系统函数
    当linux内核执行完你的操作后会把cpu给任何一个进程，用linux内核决定
    所以当你fork成功后 有可能cpu会还给你  也有可能cpu会给到拷贝的子进程
    
pid_t fork (void)
*/
    //拷贝一个子进程  cpu 有可能会先回到子进程也有可能是父进程
    pid_t pid = fork();

    if(pid < 0)
    {
        //小于0   表示拷贝子进程失败
        perror("cp失败");
        //退出进程 失败的
        exit(EXIT_FAILURE);
    }
    else if(pid == 0)
    {
        //表示这是 拷贝的子进程
        printf("我是一个子进程...\n");
        exit(EXIT_SUCCESS);
    }
    else
    {
        //进入这个分支表示是一个父进程
        printf("我是一个父进程,子进程pid = %d\n",pid);
        exit(EXIT_SUCCESS);
    }

    return 0;
}

